package 模拟斗地主升级版;
/*
1.创建HashMap集合，键是编号，值是牌
2.创建ArrayList,存储编号
3.创建花色数组和点数数组
4.从0开始往HashMap里面存储编号，并存储对应的牌。同时往ArrayList里面存储编号
5.洗牌（洗的是编号），用Collections的shuffle()方法实现
6.发牌（发的也是编号，为了保证编号是排序的，创建TreeSet集合接收）
7.定义方法看牌（遍历TreeSet集合，获取编号，到HashMap集合找对应的牌）
8.调用看牌方法
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class CollectionDemo {
    public static void main(String[] args) {
        HashMap<Integer,String>map=new HashMap<Integer,String>();
        ArrayList<Integer>array=new ArrayList<Integer>();
        //定义花色数组
        String[] colors = {"♣", "♠", "♥", "🟥"};
        //定义点数
        String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "J", "Q", "K", "A","2"};

        //从0开始往HashMap里面存储编号，并存储对应的牌。同时往ArrayList里面存储编号
        int index=0;
        for (String number :numbers){
            for (String color:colors){
                map.put(index,color+number);
                array.add(index);
                index++;
            }
        }
        map.put(index,"大王");
        array.add(index);
        index++;
        map.put(index,"小王");
        array.add(index);
        index++;

        //洗牌（洗的是编号，用Collections的shuffle()方法实现
        Collections.shuffle(array);

        //6.发牌（发的也是编号，为了保证编号是排序的，创建TreeSet集合接收）
        TreeSet<Integer>jhxSet=new TreeSet<Integer>();
        TreeSet<Integer>hwjSet=new TreeSet<Integer>();
        TreeSet<Integer>djhSet=new TreeSet<Integer>();
        TreeSet<Integer>dpSet=new TreeSet<Integer>();

        for (int i = 0; i < array.size() ; i++) {
            int x=array.get(i);
            if (i>= array.size()-3){
                dpSet.add(x);
            } else if (i%3==0) {
                jhxSet.add(x);
            } else if (i%3==1) {
                hwjSet.add(x);
            } else if (i%3==2) {
                djhSet.add(x);
            }
        }
        //调用看牌方法
        lookpoker("姜恒星",jhxSet,map);
        lookpoker("郝万杰",hwjSet,map);
        lookpoker("邓吉壕",djhSet,map);
        lookpoker("底牌",dpSet,map);
//        System.out.println(map);
    }
    //7.定义方法看牌（遍历TreeSet集合，获取编号，到HashMap集合找对应的牌）
    public static void lookpoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> map){
        System.out.println(name+"的牌是");
        //遍历编号，根据编号找对应的牌
for(Integer key : ts){
    String poker = map.get(key);
    System.out.print(poker+" ");
}
        System.out.println();
    }
}
